package com.itheima.reggie.handler;


import com.itheima.reggie.common.CustomException;
import com.itheima.reggie.common.ResultInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;


@ControllerAdvice//标注此类为一个异常处理类
@ResponseBody
@Slf4j
public class CommonExceptionHandler {
    //特定的一些异常
    @ExceptionHandler(DuplicateKeyException.class)
    public ResultInfo duplicateKeyExceptionHandler(Exception ex) {
        ex.printStackTrace();//打印异常
        return ResultInfo.error("名称重复");//特定的错误提示
    }
    // 预期异常处理方法(自己抛的异常)
    @ExceptionHandler(CustomException.class)
    public ResultInfo customExceptionHandler(CustomException cex) {
        cex.printStackTrace();//打印异常
        return ResultInfo.error(cex.getMessage());//返回抛出时我们所写的异常
    }

    //非预期异常处理方法
    @ExceptionHandler(Exception.class)
    public ResultInfo exceptionHandler(Exception ex) {
        ex.printStackTrace();
        return ResultInfo.error("对不起网络错误，请联系管理员");//返回一个固定的错误提示
    }
}
